跳到主要内容

通过 Node-RED 向 Microsoft Teams 发送消息

本教程向您展示如何将来自 OV20i 摄像头的检测通知直接发送到 Microsoft Teams 通道。您将学习如何设置包含检测结果与可点击图片链接的自动化警报,让团队能够即时了解生产状态。

您将构建的内容: 一套自动化系统,将 OV20i 检测结果(包括图片和通过/不通过状态)直接发布到 Microsoft Teams 通道。

实际应用场景: 当检测失败时立即接收通知;与远程团队共享检测图片;或在团队协作空间中创建自动化的质量报告。

前提条件

  • 将 OV20i 摄像头连接到工厂网络
  • 具有添加连接器权限的 Microsoft Teams 访问权限
  • 您希望接收通知的 Teams 通道
  • OV20i 与 Microsoft Teams 之间的网络连通性
  • 对 Node-RED 流程有基本理解

教程概览

我们将构建: 一个 Node-RED 流,能够自动将检测结果发送到 Microsoft Teams,并附带可点击的图片链接。

所需时间: 15-20 分钟

掌握技能: Teams webhook 集成、Node-RED HTTP 请求、自动化通知系统

Step 1: 设置 Microsoft Teams Webhook

1.1 进入您的 Teams 通道

  1. 打开 Microsoft Teams,并导航到用于检测通知的通道
  2. 点击通道名称旁的 三个点 (•••)
  3. 从下拉菜单中选择 "Manage channel"

1.2 添加 Incoming Webhook 连接器

  1. 在通道管理菜单中点击 "Connectors"
  2. 在连接器列表中 搜索 "Incoming Webhook"
  3. 在 Incoming Webhook 选项旁点击 "Add"

1.3 配置 Webhook 设置

  1. Name:输入一个描述性名称(例如 "OV20i Inspection Alerts")
  2. Icon:可选上传自定义图标用于通知
  3. 点击 "Create" 以生成 Webhook

1.4 保存 Webhook URL

  1. 复制生成的 webhook URL - 这对于 Node-RED 设置至关重要
  2. 将该 URL 保存到安全位置(在步骤 2 需要使用)
  3. 点击 "Done" 完成 Teams 设置

检查点: 现在您应该拥有一个类似以下的 webhook URL:https://yourcompany.webhook.office.com/webhookb2/...

Step 2: 访问 OV20i Node-RED

2.1 进入 Node-RED

  1. 打开您的 OV20i Web 界面
  2. 转到 Recipe Editor,并点击 Configure I/O,或从面包屑菜单中选择 "IO Block"

2.2 准备工作区

  1. 在 Node-RED 画布上清出一个区域,用于 Teams 集成流程
  2. 识别左侧的调色板,查看可用节点
  3. 规划流程:Trigger → Process → Send to Teams

Step 3: 构建 Node-RED 流

3.1 添加所需节点

从调色板将以下节点拖放到画布上:

  1. Inject node(用于测试)
  2. Function node(用于格式化消息)
  3. HTTP request node(用于发送到 Teams)
  4. Debug node(可选,用于故障排除)

3.2 连接节点

  1. Inject node 的输出连接到 Function node 的输入
  2. Function node 的输出连接到 HTTP request 的输入
  3. HTTP request 的输出连接到 Debug node 的输入(可选)

Flow 结构:

Inject → Function → HTTP Request → Debug

第 4 步:配置函数节点

4.1 基本消息配置

  1. 双击函数节点以打开配置
  2. 用以下基本消息格式替换默认代码:
// Basic Teams message
msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: "You got a new message from your OV20i"
};

return msg;

4.2 高级消息与图片链接

对于带可点击图片的动态检测结果:

// Dynamic message with inspection image
let imageUrl = msg.payload.image_url;

msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: `Inspection Complete - [View Image](${imageUrl})`
};

return msg;

4.3 完整的检验通知

对于完整的检验详情:

// Complete inspection notification
const inspectionData = msg.payload;
const imageUrl = inspectionData.image_url;
const result = inspectionData.result ? "PASS" : "FAIL";
const timestamp = new Date().toLocaleString();

msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: `🔍 **Inspection ${result}** - ${timestamp}\n\n[View Image](${imageUrl})`
};

return msg;

4.4 保存函数节点配置

  1. 点击 "Done" 以保存函数节点
  2. 为节点提供一个描述性名称,如 "Format Teams Message"

第 5 步:配置 HTTP 请求节点

5.1 设置 HTTP 请求

  1. 双击 HTTP 请求节点以进行配置
  2. 设置方法(Method):从下拉菜单中选择 "POST"
  3. 设置 URL:粘贴来自第 1.4 步的 Teams webhook URL
  4. 设置 Return:选择 "UTF-8 string"

5.2 其他设置

  • 名称:为了清晰,请输入 "Send to Teams"
  • Headers:留空(由函数节点处理)
  • Payload:保持为 "Ignore"(由函数节点处理)

5.3 保存 HTTP 配置

  1. 点击 "Done" 以保存 HTTP 请求节点
  2. 验证 webhook URL 是否正确 - 这对成功至关重要

第 6 步:测试您的集成

6.1 部署 Flow

  1. 点击右上角的 "Deploy" 按钮
  2. 等待出现 "Successfully deployed" 确认
  3. 检查节点上的任何错误指示(红色三角形)

6.2 使用 Inject Node 进行测试

  1. 点击注入节点左侧的按钮
  2. 检查调试面板(右侧栏)中的错误信息
  3. 在你的 Teams 通道中验证消息是否出现

6.3 验证 Teams 通知

  1. 切换到 Microsoft Teams,并检查目标通道
  2. 查找来自 OV20i 的测试消息
  3. 测试任何可点击的链接,以确保它们正常工作

第 7 步:与检验流程的集成

7.1 连接到检验结果

要在每次检验后发送自动通知:

  1. 找到你的主检验流程(通常以 "All Block Outputs" 开头)
  2. 将 Teams 通知添加为主流程的一个分支
  3. 在完成检验处理后但在最终结果之前连接

7.2 示例集成流程

All Block Outputs → [Inspection Logic] → Final Pass/Fail

Format Teams Message → Send to Teams

7.3 过滤通知(可选)

仅在检测失败时发送通知:

// Only send notifications for failures
const inspectionResult = msg.payload.result;

if (!inspectionResult) { // Only if inspection failed
const imageUrl = msg.payload.image_url;

msg.headers = {
"Content-Type": "application/json"
};

msg.payload = {
text: `⚠️ **INSPECTION FAILED** - Immediate attention required\n\n[View Failed Image](${imageUrl})`
};

return msg;
} else {
return null; // Don't send message for passing inspections
}

步骤 8:故障排除

8.1 常见问题

问题症状解决方案
Teams 中无消息调试显示成功但没有 Teams 通知检查 webhook URL,验证网络连接
HTTP 错误 400调试中的错误请求检查消息格式,确保 Content-Type 头
图片链接不起作用消息显示,但图片无法打开验证图片 URL 在 Teams 用户网络中是否可访问
流程未触发期望时无调试输出检查流程连线,验证触发条件

8.2 调试您的流程

  1. 在每个步骤后添加 debug 节点以追踪数据流
  2. 检查调试面板,查看错误消息和数据结构
  3. 使用 inject 节点进行测试,以排除配置问题
  4. 如有需要,使用外部工具测试以验证 webhook URL

8.3 网络连通性

  1. 确保 OV20i 能访问互联网(可从摄像头执行 ping 测试)
  2. 检查可能阻止出站 HTTPS 的防火墙设置
  3. 验证 Teams webhook URL 的 DNS 解析
  4. 在与摄像头同一网络的浏览器中进行测试

成功!您的 Teams 集成已完成

您的 OV20i 摄像头现已可以:

✅ 自动发送通知到 Microsoft Teams 通道

✅ 包含可点击的图片链接,便于立即查看检查结果

✅ 根据检查结果过滤通知

✅ 提供带有检查详情和时间戳的丰富格式

✅ 支持不同通知类型的多通道

最佳实践

消息管理

  • 使用描述性的通道名称区分不同类型的通知
  • 在消息中包含时间戳和工位标识
  • 过滤消息,避免通知过载
  • 在生产部署前进行充分测试

安全性考虑

  • 保护 webhook URL —— 将其视为敏感凭据
  • 对所有通信使用 HTTPS(Teams 的默认设置)
  • 仅将网络访问限制为必要的服务
  • 如 URL 被泄露,请定期轮换 webhook URL

性能优化

  • 在发送大量消息时对通知进行批处理
  • 对网络故障使用合适的重试逻辑
  • 监控消息投递成功率
  • 实施速率限制以避免 Teams API 限制

image.png

接下来步骤

在完成 Teams 集成后:

  1. 为不同检查类型创建不同的通知通道
  2. 为关键故障设置升级工作流
  3. 与其他团队工具集成(电子邮件、短信等)
  4. 构建仪表板,将 Teams 与其他监控工具结合
  5. 对团队进行自动通知响应培训

🔗 相关链接